
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
openapi-client-axios
Advanced tools
JavaScript client library for consuming OpenAPI-enabled APIs with axios. Types included.
JavaScript client library for consuming OpenAPI-enabled APIs with axios. Types included.
client.getPet(1)
client.searchPets()
client.searchPets({ ids: [1, 2, 3] })
client.updatePet(1, payload)
New! OpenAPI Client Axios documentation is now found on openapistack.co
https://openapistack.co/docs/openapi-client-axios/intro
npm install --save axios openapi-client-axios
yarn add axios openapi-client-axios
With promises / CommonJS syntax:
const OpenAPIClientAxios = require('openapi-client-axios').default;
const api = new OpenAPIClientAxios({ definition: 'https://example.com/api/openapi.json' });
api.init()
.then(client => client.getPetById(1))
.then(res => console.log('Here is pet id:1 from the api', res.data));
With async-await / ES6 syntax:
import OpenAPIClientAxios from 'openapi-client-axios';
const api = new OpenAPIClientAxios({ definition: 'https://example.com/api/openapi.json' });
api.init();
async function createPet() {
const client = await api.getClient();
const res = await client.createPet(null, { name: 'Garfield' });
console.log('Pet created', res.data);
}
OpenAPI Client Axios uses operationIds in OpenAPIv3 definitions to call API operations.
After initializing OpenAPIClientAxios
, an axios client instance extended with OpenAPI capabilities is exposed.
Example:
const api = new OpenAPIClientAxios({ definition: 'https://example.com/api/openapi.json' });
api.init().then((client) => {
client.updatePet(1, { age: 12 });
});
client
is an axios instance initialized with
baseURL from OpenAPI definitions and extended with extra operation methods for calling API operations.
It also has a reference to OpenAPIClientAxios at client.api
OpenAPIClientAxios operation methods take 3 arguments:
client.operationId(parameters?, data?, config?)
The first argument is used to pass parameters available for the operation.
// GET /pets/{petId}
client.getPet({ petId: 1 })
For syntactic sugar purposes, you can also specify a single implicit parameter value, in which case OpenAPIClientAxios will look for the first required parameter for the operation. Usually this is will be a path parameter.
// GET /pets/{petId} - getPet
client.getPet(1)
Alternatively, you can explicitly specify parameters in array form. This method allows you to set custom parameters not defined in the OpenAPI spec.
// GET /pets?search=Garfield - searchPets
client.searchPets([{ name: 'search', value: 'Garfield', in: 'query' }])
The type of the parameters can be any of:
The second argument is used to pass the requestPayload
// PUT /pets/1 - updatePet
client.updatePet(1, { name: 'Odie' })
More complex payloads, such as Node.js streams or FormData supported by Axios can be used.
The first argument can be set to null if there are no parameters required for the operation.
// POST /pets - createPet
client.updatePet(null, { name: 'Garfield' })
The last argument is the config object.
The config object is an AxiosRequestConfig
object. You can use it to
override axios request config parameters, such as headers
, timeout
, withCredentials
and many more.
// POST /user - createUser
client.createUser(null, { user: 'admin', pass: '123' }, { headers: { 'x-api-key': 'secret' } });
OpenAPI Client Axios also allows calling API operations via their path and HTTP method, using the paths dictionary.
Example:
client.paths['/pets'].get(); // GET /pets, same as calling client.getPets()
client.paths['/pets'].post(); // POST /pets
client.paths['/pets/{petId}'].put(1); // PUT /pets/1
client.paths['/pets/{petId}/owner/{ownerId}'].get({ petId: 1, ownerId: 2 }) ; // GET /pets/1/owner/2
This allows calling operation methods without using their operationIds, which may be sometimes preferred.
openapi-client-axios
comes with a CLI command openapicmd typegen
to generate Typescript types for type safety and code autocomplete.
npx openapicmd typegen ./openapi.yaml > src/types/openapi.d.ts
The output of typegen
exports a type called Client
, which can be used for instances created with OpenAPIClientAxios
.
Both the api.getClient()
and api.init()
methods support passing in a Client type.
import { Client as PetStoreClient } from './client.d.ts';
const client = await api.init<PetStoreClient>();
const client = await api.getClient<PetStoreClient>();
openapicmd typegen
supports using both local and remote URLs for OpenAPI definition files.
$ npx openapicmd typegen ./petstore.yaml
$ npx openapicmd typegen https://petstore3.swagger.io/api/v3/openapi.json
For assistance with openapi-client-axios in your company, reach out at support@openapistack.co.
OpenAPI Client Axios is Free and Open Source Software. Issues and pull requests are more than welcome!
FAQs
JavaScript client library for consuming OpenAPI-enabled APIs with axios. Types included.
The npm package openapi-client-axios receives a total of 54,467 weekly downloads. As such, openapi-client-axios popularity was classified as popular.
We found that openapi-client-axios demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.